home *** CD-ROM | disk | FTP | other *** search
- // TestDebugTerm.c
-
- #include "TestDebugTerm.h"
- #include "DebugTerm.h"
-
- Handle gMBar;
- MenuHandle gAppleMenuH, gFileMenuH, gEditMenuH, gTestMenuH;
- Boolean gAsync, gPrompt;
-
- pascal void DoQuit(void)
- {
- CloseDebugTerm(); // accidentally leaving a connection open would be
- ExitToShell(); // a bad thing, and redundantly calling won't hurt
- }
-
- void InitSys(void)
- {
- InitGraf(&qd.thePort);
- InitWindows();
- InitFonts();
- InitMenus();
- InitDialogs(DoQuit);
- InitCursor();
- FlushEvents(everyEvent, nil);
- }
-
- void SetupMenus(void)
- {
- gMBar = GetNewMBar(rMBarID);
- SetMenuBar(gMBar);
- gAppleMenuH = GetMHandle(rAppleMenuID);
- gFileMenuH = GetMHandle(rFileMenuID);
- gEditMenuH = GetMHandle(rEditMenuID);
- gTestMenuH = GetMHandle(rTestMenuID);
- AddResMenu(gAppleMenuH, 'DRVR');
- DrawMenuBar();
- }
-
- void DoAboutBox(void)
- {
- Alert(rAboutAlertID, nil);
- }
-
-
- void InitApp(void)
- {
- SetupMenus();
- gAsync = gPrompt = true;
- CheckItem(gTestMenuH, rAsyncMItem, true);
- CheckItem(gTestMenuH, rPromptMItem, true);
- }
-
- void DoMenu(long menuResult)
- {
- short i, menuID, itemNumber;
- Str255 daName;
- GrafPtr oldPort;
-
- menuID = HiWord(menuResult);
- itemNumber = LoWord(menuResult);
-
- switch(menuID) {
- case rAppleMenuID:
- if (itemNumber == rAboutMItem)
- DoAboutBox();
- else {
- GetItem(gAppleMenuH, itemNumber, daName);
- GetPort(&oldPort);
- OpenDeskAcc(daName);
- SetPort(oldPort);
- }
- break;
- case rFileMenuID:
- switch(itemNumber) {
- case rQuitMItem:
- DoQuit();
- break;
- }
- break;
- case rEditMenuID:
- SystemEdit(itemNumber - 1);
- break;
- case rTestMenuID:
- switch(itemNumber) {
- case rOpenMItem:
- if (OpenDebugTerm(gAsync, kDoInitCTB, gPrompt))
- SysBeep(5);
- else {
- DisableItem(gTestMenuH, rOpenMItem);
- DisableItem(gTestMenuH, rAsyncMItem);
- DisableItem(gTestMenuH, rPromptMItem);
- EnableItem(gTestMenuH, rCloseMItem);
- EnableItem(gTestMenuH, rSimpleMItem);
- EnableItem(gTestMenuH, rSlowerMItem);
- EnableItem(gTestMenuH, rFasterMItem);
- EnableItem(gTestMenuH, rStressMItem);
- EnableItem(gTestMenuH, rRectMItem);
- EnableItem(gTestMenuH, rAbsurdItem);
- };
- break;
- case rCloseMItem:
- if (CloseDebugTerm())
- SysBeep(5);
- else {
- EnableItem(gTestMenuH, rOpenMItem);
- EnableItem(gTestMenuH, rAsyncMItem);
- EnableItem(gTestMenuH, rPromptMItem);
- DisableItem(gTestMenuH, rCloseMItem);
- DisableItem(gTestMenuH, rSimpleMItem);
- DisableItem(gTestMenuH, rSlowerMItem);
- DisableItem(gTestMenuH, rFasterMItem);
- DisableItem(gTestMenuH, rStressMItem);
- DisableItem(gTestMenuH, rRectMItem);
- DisableItem(gTestMenuH, rAbsurdItem);
- };
- break;
- case rAsyncMItem:
- CheckItem(gTestMenuH, rAsyncMItem, gAsync = !gAsync);
- break;
- case rPromptMItem:
- CheckItem(gTestMenuH, rPromptMItem, gPrompt = !gPrompt);
- break;
- case rSimpleMItem:
- DebugTerm("\pHello, World!\n\r");
- break;
- case rSlowerMItem:
- debugf("Elapsed time: %s minutes and %i seconds.\n\r", 5, 3);
- break;
- case rFasterMItem:
- debugf("%p%l%c%s%p%i%c", "\pElapsed time: ", 10l,
- " hours, ", 5, "\p minutes and ", 3, " seconds.\n\r");
- break;
- case rRectMItem:
- // alternate possibility to use %r specifier
- //debugf("Screenbits.bounds: %r\n\r", qd.screenBits.bounds);
- debugf("%p {%s, %s, %s, %s}\n\r", "\pScreenbits.bounds:",
- qd.screenBits.bounds.top, qd.screenBits.bounds.left,
- qd.screenBits.bounds.bottom, qd.screenBits.bounds.right);
- break;
- case rAbsurdItem:
- debugf("%% %p %c %s times.\n\r", "\pRocko",
- "had an unfortunate accident. He fell on his stiletto", 47);
- break;
- case rStressMItem:
- for(i = 1; i <= 500; i++)
- debugf("%p%i%c", "\pExecuting 500 times: i = ", i, "\n\r");
- break;
- }
- break;
- default:
- break;
- }
- HiliteMenu(0);
- }
-
- void main(void)
- {
- char c;
- EventRecord theEvent;
- WindowPtr whichWindow;
- short windowCode;
- long result;
-
- InitSys();
- InitApp();
-
- while (true) {
- SystemTask();
- if (GetNextEvent(everyEvent, &theEvent)) {
- switch (theEvent.what) {
- case updateEvt:
- break;
- case keyDown:
- case autoKey:
- c = theEvent.message & kKeyMask;
- if (theEvent.modifiers & cmdKey)
- DoMenu(MenuKey(c));
- break;
- case mouseDown:
- windowCode = FindWindow(theEvent.where, &whichWindow);
- switch (windowCode) {
- case inMenuBar:
- result = MenuSelect(theEvent.where);
- DoMenu(result);
- break;
- case inSysWindow:
- SystemClick(&theEvent, whichWindow);
- break;
- default:
- break;
- }
- break;
- }
- }
- }
- }